package com.sumainfor.pc.market.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.pc.market.service.RunProviderService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @Author Eddy·Chen
 * @Email 835033913@qq.com
 * @Create 2019-03-07 10:36
 * 运营部服务提供者
 */
@RestController
@RequestMapping("/key/run/provider")
public class RunProviderController {

    @Autowired
    private RunProviderService rps;

    /**
     * 通过房源详表编号查询 运营部所需要的数据
     *
     * @param houInfoId
     * @return
     */
    @PostMapping("/getHousingInfoById")
    public JsonResult getHousingInfoById(String houInfoId) {
        if (StringUtils.isBlank(houInfoId)) {
            return JsonResult.errorForEmpty();
        }
        return rps.getHousingInfoById(houInfoId);
    }


    /**
     * 获得房源信息 业主提前收房用
     *
     * @param houId
     * @return
     */
    @PostMapping("/getOmHousingInfoById")
    public Map<String, Object> getOmHousingInfoById(String houId) {
        if (StringUtils.isBlank(houId)) {
            return null;
        }
        return rps.getOmHousingInfoById(houId);
    }

    /**
     * 修改业主联系方式
     *
     * @param params
     * @return
     */
    @PostMapping("/updateOwCallInfo")
    public JsonResult updateOwCallInfo(@RequestBody Map<String, Object> params) {
        if (MapUtils.isEmpty(params)) {
            return JsonResult.errorForEmpty();
        }
        return rps.updateOwCallInfo(params);
    }


    /**
     * 修改业主人员信息
     *
     * @param list
     * @return
     */
    @PostMapping("/updateOwPeopleInfo")
    public JsonResult updateOwPeopleInfo(@RequestBody List<Map<String, Object>> list) {
        if (CollectionUtils.isEmpty(list)) {
            return JsonResult.errorForEmpty();
        }
        return rps.updateOwPeopleInfo(list);
    }


    /**
     * 修改业主银行收款信息
     *
     * @param params
     * @return
     */
    @PostMapping("/updateOwPactInfo")
    public JsonResult updateOwPactInfo(@RequestBody Map<String, Object> params) {
        if (MapUtils.isEmpty(params)) {
            return JsonResult.errorForEmpty();
        }
        return rps.updateOwPactInfo(params);
    }

    /**
     * 获取业主资料信息通过业主的手机号或者业主编号
     *
     * @param params
     * @return
     */
    @PostMapping("/getOwnerInfoByParams")
    public Map<String, Object> getOwnerInfoByParams(@RequestBody Map<String, Object> params) {
        return rps.getOwnerInfoByParams(params);
    }

    /**
     * 获取业主履行中的合同信息
     *
     * @param ownerId
     * @return
     */
    @PostMapping("/selectOwnerPactList")
    public List<Map<String, Object>> selectOwnerPactList(@RequestBody List<String> ownerId) {
        if (CollectionUtils.isEmpty(ownerId)) {
            return Lists.newArrayList();
        }
        return rps.selectOwnerPactList(ownerId);
    }


    /**
     * 通过业主编号查询这个业主的房源所在地理位置
     *
     * @param ownerId
     * @return
     */
    @PostMapping("/getAddressInfo")
    public Map<String, Object> getAddressInfo(String ownerId) {
        return rps.getAddressInfo(ownerId);
    }

    /**
     * 通过业主的手机号码 查询业主信息
     *
     * @param phone
     * @return
     */
    @PostMapping("/getOwnerInfoListByPhone")
    public List<Map<String, Object>> getOwnerInfoListByPhone(String phone) {
        return rps.getOwnerInfoListByPhone(phone);
    }

    /**
     * 查询业主人员信息数据
     *
     * @param houId
     * @return
     */
    @PostMapping("/getOwnerPeopleData")
    public List<Map<String, Object>> getOwnerPeopleData(String houId) {
        return rps.getOwnerPeopleData(houId);
    }

    /**
     * 根据业主信息 去查询业主原来的收款信息
     *
     * @param owId
     * @return
     */
    @PostMapping("/getOwnerOldBlankInfo")
    public Map<String, Object> getOwnerOldBlankInfo(String owId) {
        return rps.getOwnerOldBlankInfo(owId);
    }


    ///////////////////////////////////////////////////////////////////////////
    // 退租账单验收
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 退租账单查询列表数据
     *
     * @param page
     * @param params
     * @return
     */
    @PostMapping("/selectSurrenderList")
    public IPage<Map<String, Object>> selectSurrenderList(Page page, @RequestBody Map<String, Object> params) {
        return rps.selectSurrenderList(page, params);
    }


    /**
     * 查询合同到期时间
     *
     * @param pactId
     * @return
     */
    @PostMapping("/getPactPastTime")
    public String getPactPastTime(String pactId) {
        return rps.getPactPastTime(pactId);
    }

    /**
     * 查询活动名称
     *
     * @param actId
     * @return
     */
    @PostMapping("/getActivateNameById")
    public String getActivateNameById(String actId) {
        return rps.getActivateNameById(actId);
    }


    ///////////////////////////////////////////////////////////////////////////
    // 各地区收费标准
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 根据服务中心的编号查询小区数据列表
     *
     * @param centerId
     * @param page
     * @return
     */
    @PostMapping("/selectProjectByCenterId")
    public IPage<Map<String, Object>> selectProjectByCenterId(Page page, String centerId) {
        return rps.selectProjectByCenterId(page, centerId);
    }


    /**
     * 根据项目的编号查询房源的数据列表
     *
     * @param params
     * @return
     */
    @PostMapping("/selectHousingListView")
    public IPage<Map<String, Object>> selectHousingListView(@RequestBody Map<String, Object> params) {
        Page page = new Page(MapUtils.getIntValue(params, "current"), MapUtils.getIntValue(params, "size"));
        return rps.selectHousingListView(page, params);
    }

}
